<?php
// 安装脚本，用于初始化数据库

// 获取配置信息
$config = require './config/database.php';

$host = $config['host'];
$username = $config['username'];
$password = $config['password'];
$database = $config['database'];
$port = $config['port'];
$charset = $config['charset'];

// 创建连接并初始化数据库
try {
    // 先不指定数据库名，以便创建数据库
    $pdo = new PDO("mysql:host={$host};port={$port}", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    echo "数据库连接成功...<br>";
    
    // 创建数据库（如果不存在）
    $pdo->exec("CREATE DATABASE IF NOT EXISTS `{$database}` DEFAULT CHARACTER SET {$charset} COLLATE {$charset}_unicode_ci");
    echo "数据库 {$database} 创建或已存在...<br>";
    
    // 切换到指定数据库
    $pdo->exec("USE `{$database}`");
    
    // 读取SQL文件并替换数据库名
    $sql = file_get_contents('./config/init.sql');
    
    // 替换SQL中的数据库名
    $sql = preg_replace("/CREATE DATABASE IF NOT EXISTS `pos_system`/", "-- 数据库已创建", $sql);
    $sql = preg_replace("/USE `pos_system`;/", "-- 数据库已选择", $sql);
    
    // 按语句分割SQL
    $statements = explode(';', $sql);
    
    // 执行每条SQL语句
    foreach ($statements as $statement) {
        $statement = trim($statement);
        if (!empty($statement)) {
            try {
                $pdo->exec($statement);
            } catch (PDOException $e) {
                // 某些语句可能会失败，例如重复创建表，但不应停止整个过程
                echo "警告: " . $e->getMessage() . "<br>";
            }
        }
    }
    
    echo "数据库初始化完成！<br>";
    
    // 创建上传目录
    if (!file_exists('./uploads')) {
        mkdir('./uploads', 0777, true);
        echo "创建上传目录...<br>";
    }
    
    if (!file_exists('./uploads/products')) {
        mkdir('./uploads/products', 0777, true);
        echo "创建产品图片目录...<br>";
    }
    
    echo "<h2>恭喜！系统安装成功！</h2>";
    echo "<p>默认管理员账号：admin，密码：admin123</p>";
    echo "<p>默认收银员账号：cashier，密码：cashier123</p>";
    echo "<p>默认厨师账号：chef，密码：chef123</p>";
    echo "<p>默认会员账号：member，密码：member123</p>";
    echo "<p><a href='index.php'>点击进入系统</a></p>";
    
    // 创建一个标记文件，表示已安装
    file_put_contents('./.installed', date('Y-m-d H:i:s'));
    
} catch (PDOException $e) {
    die("数据库操作失败: " . $e->getMessage());
} 